home *** CD-ROM | disk | FTP | other *** search
- {
- This file is part of the Free Pascal run time library.
-
- A file in Amiga system run time library.
- Copyright (c) 1998-2000 by Nils Sjoholm
- member of the Amiga RTL development team.
-
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
- {
- History:
- Added overlay functions for Pchar->Strings, functions
- and procedures.
- 14 Jul 2000.
-
- Added MessageBox for error report.
- 31 Jul 2000.
-
- nils.sjoholm@mailbox.swipnet.se
- }
-
- UNIT REQTOOLS;
-
- INTERFACE
-
- {$I amigaoverlays.inc}
-
- USES Exec, intuition, amigados, diskfont, graphics, utility;
-
-
-
- {***********************
- * *
- * Preferences *
- * *
- ***********************}
-
- CONST RTPREF_FILEREQ = 0;
- RTPREF_FONTREQ = 1;
- RTPREF_PALETTEREQ = 2;
- RTPREF_SCREENMODEREQ = 3;
- RTPREF_VOLUMEREQ = 4;
- RTPREF_OTHERREQ = 5;
- RTPREF_NR_OF_REQ = 6;
-
- Type
- pReqDefaults = ^tReqDefaults;
- tReqDefaults = Record
- Size : ULONG;
- ReqPos : ULONG;
- LeftOffset : WORD;
- TopOffset : WORD;
- MinEntries : WORD;
- MaxEntries : WORD;
- END;
-
- pReqToolsPrefs = ^tReqToolsPrefs;
- tReqToolsPrefs = Record
- { Size of preferences (_without_ this field and the semaphore) }
- PrefsSize : ULONG;
- PrefsSemaphore : tSignalSemaphore;
- { Start of real preferences }
- Flags : ULONG;
- ReqDefaults : ARRAY [0..RTPREF_NR_OF_REQ-1] OF tReqDefaults;
- END;
-
- CONST
- RTPREFS_SIZE = 100;
-
- { Flags }
-
- RTPRB_DIRSFIRST = 0;
- RTPRF_DIRSFIRST = 1;
- RTPRB_DIRSMIXED = 1;
- RTPRF_DIRSMIXED = 2;
- RTPRB_IMMSORT = 2;
- RTPRF_IMMSORT = 4;
- RTPRB_NOSCRTOFRONT = 3;
- RTPRF_NOSCRTOFRONT = 8;
- RTPRB_NOLED = 4;
- RTPRF_NOLED = 16;
- RTPRB_DEFAULTFONT = 5;
- RTPRF_DEFAULTFONT = 32;
- RTPRB_DOWHEEL = 6;
- RTPRF_DOWHEEL = 64;
- RTPRB_FKEYS = 7;
- RTPRF_FKEYS = 128;
- RTPRB_FANCYWHEEL = 8;
- RTPRF_FANCYWHEEL = 256;
- RTPRB_MMBPARENT = 9;
- RTPRF_MMBPARENT = 512;
-
- {***********************
- * *
- * Library Base *
- * *
- ***********************}
-
- Const
-
- REQTOOLSNAME : PChar = 'reqtools.library';
- REQTOOLSVERSION = 38;
-
- Type
-
- pReqToolsBase = ^tReqToolsBase;
- tReqToolsBase = Record
- LibNode : pLibrary;
- RTFlags : Byte;
- Pad : Array[0..2] of Byte;
- SegList : BPTR;
-
- { The following library bases may be read and used by your program }
-
- IntuitionBase : pLibrary;
- GfxBase : pLibrary;
- DOSBase : pLibrary;
-
- { Next two library bases are only (and always) valid on Kickstart 2.0!
- (1.3 version of reqtools also initializes these when run on 2.0) }
-
- GadToolsBase : pLibrary;
- UtilityBase : pLibrary;
-
- { PRIVATE FIELDS, THESE WILL CHANGE FROM RELEASE TO RELEASE! }
-
- { The RealOpenCnt is for the buffered AvailFonts feature. Since
- Kickstart 3.0 offers low memory handlers a release of ReqTools for 3.0
- will not use this field and start using the normal OpenCnt again. }
-
- RealOpenCnt : WORD;
- AvailFontsLock : WORD;
- AvailFontsHeader : pAvailFontsHeader;
- FontsAssignType : ULONG;
- FontsAssignLock : BPTR;
- FontsAssignList : pAssignList;
- ReqToolsPrefs : tReqToolsPrefs;
- prefspad : WORD;
- end;
-
-
- Const
-
- { types of requesters, for rtAllocRequestA() }
-
- RT_FILEREQ = 0;
- RT_REQINFO = 1;
- RT_FONTREQ = 2;
- { (V38) }
- RT_SCREENMODEREQ = 3;
-
- {***********************
- * *
- * File requester *
- * *
- ***********************}
-
- type
-
- { structure _MUST_ be allocated with rtAllocRequest() }
-
- prtFileRequester = ^trtFileRequester;
- trtFileRequester = Record
- ReqPos : ULONG;
- LeftOffset : WORD;
- TopOffset : WORD;
- Flags : ULONG;
-
- { OBSOLETE IN V38! DON'T USE! } Hook: pHook;
-
- Dir : STRPTR; { READ ONLY! Change with rtChangeReqAttrA()! }
- MatchPat : STRPTR; { READ ONLY! Change with rtChangeReqAttrA()! }
- DefaultFont : pTextFont;
- WaitPointer : ULONG;
- { (V38) }
- LockWindow : ULONG;
- ShareIDCMP : ULONG;
- IntuiMsgFunc: pHook;
- reserved1 : WORD;
- reserved2 : WORD;
- reserved3 : WORD;
- ReqHeight : WORD; { READ ONLY! Use RTFI_Height tag! }
- { Private data follows! HANDS OFF }
- end;
-
-
- { returned by rtFileRequestA() if multiselect is enabled,
- free list with rtFreeFileList() }
-
- prtFileList = ^trtFileList;
- trtFileList = Record
- Next : prtFileList;
- StrLen : ULONG; { -1 for directories }
- Name : STRPTR;
- end;
-
- { structure passed to RTFI_FilterFunc callback hook by
- volume requester (see RTFI_VolumeRequest tag) }
-
- prtVolumeEntry = ^trtVolumeEntry;
- trtVolumeEntry = Record
- Type_ : ULONG; { DLT_DEVICE or DLT_DIRECTORY }
- Name : STRPTR;
- END;
-
- {***********************
- * *
- * Font requester *
- * *
- ***********************}
-
- { structure _MUST_ be allocated with rtAllocRequest() }
-
- prtFontRequester = ^trtFontRequester;
- trtFontRequester = Record
- ReqPos : ULONG;
- LeftOffset : WORD;
- TopOffset : WORD;
- Flags : ULONG;
- { OBSOLETE IN V38! DON'T USE! } Hook: pHook;
- Attr : tTextAttr; { READ ONLY! }
- DefaultFont : pTextFont;
- WaitPointer : ULONG;
- { (V38) }
- LockWindow : ULONG;
- ShareIDCMP : ULONG;
- IntuiMsgFunc : pHook;
- reserved1 : WORD;
- reserved2 : WORD;
- reserved3 : WORD;
- ReqHeight : WORD; { READ ONLY! Use RTFO_Height tag! }
- { Private data follows! HANDS OFF }
- end;
-
-
- {*************************
- * *
- * ScreenMode requester *
- * *
- *************************}
-
- { structure _MUST_ be allocated with rtAllocRequest() }
-
- prtScreenModeRequester = ^trtScreenModeRequester;
- trtScreenModeRequester = Record
- ReqPos : ULONG;
- LeftOffset : WORD;
- TopOffset : WORD;
- Flags : ULONG;
- private1 : ULONG;
- DisplayID : ULONG; { READ ONLY! }
- DisplayWidth: WORD; { READ ONLY! }
- DisplayHeight: WORD; { READ ONLY! }
- DefaultFont : pTextFont;
- WaitPointer : ULONG;
- LockWindow : ULONG;
- ShareIDCMP : ULONG;
- IntuiMsgFunc: pHook;
- reserved1 : WORD;
- reserved2 : WORD;
- reserved3 : WORD;
- ReqHeight : WORD; { READ ONLY! Use RTSC_Height tag! }
- DisplayDepth: WORD; { READ ONLY! }
- OverscanType: WORD; { READ ONLY! }
- AutoScroll : ULONG; { READ ONLY! }
- { Private data follows! HANDS OFF }
- end;
-
-
- {***********************
- * *
- * Requester Info *
- * *
- ***********************}
-
- { for rtEZRequestA(), rtGetLongA(), rtGetStringA() and rtPaletteRequestA(),
- _MUST_ be allocated with rtAllocRequest() }
-
- prtReqInfo = ^trtReqInfo;
- trtReqInfo = Record
- ReqPos : ULONG;
- LeftOffset : WORD;
- TopOffset : WORD;
- Width : ULONG; { not for rtEZRequestA() }
- ReqTitle : STRPTR; { currently only for rtEZRequestA() }
- Flags : ULONG; { currently only for rtEZRequestA() }
- DefaultFont : pTextFont; { currently only for rtPaletteRequestA() }
- WaitPointer : ULONG;
- { (V38) }
- LockWindow : ULONG;
- ShareIDCMP : ULONG;
- IntuiMsgFunc: pHook;
- { structure may be extended in future }
- end;
-
-
- {***********************
- * *
- * Handler Info *
- * *
- ***********************}
-
- { for rtReqHandlerA(), will be allocated for you when you use
- the RT_ReqHandler tag, never try to allocate this yourself! }
-
- prtHandlerInfo = ^trtHandlerInfo;
- trtHandlerInfo = Record
- private1 : ULONG;
- WaitMask : ULONG;
- DoNotWait : ULONG;
- { Private data follows, HANDS OFF }
- end;
-
-
- Const
-
- { possible return codes from rtReqHandlerA() }
-
- CALL_HANDLER = $80000000;
-
- {*************************************
- * *
- * TAGS *
- * *
- *************************************}
-
- RT_TagBase = TAG_USER;
-
- { *** tags understood by most requester functions *** }
-
- RT_Window = $80000001; { Optional pointer to window }
- RT_IDCMPFlags = $80000002; { idcmp flags requester should abort on (useful for
- IDCMP_DISKINSERTED) }
- RT_ReqPos = $80000003; { position of requester window (see below) - default
- REQPOS_POINTER }
- RT_LeftOffset = $80000004; { signal mask to wait for abort signal }
- RT_TopOffset = $80000005; { topedge offset of requester relative to position
- specified by RT_ReqPos }
- RT_PubScrName = $80000006; { name of public screen to put requester on (Kickstart
- 2.0 only!) }
- RT_Screen = $80000007; { address of screen to put requester on }
- RT_ReqHandler = $80000008; { tagdata must hold the address of (!) an APTR variable }
- RT_DefaultFont = $80000009; { font to use when screen font is rejected, _MUST_ be
- fixed-width font! pTextFont , not pTextAttr ) - default GfxBase^.DefaultFont }
-
- RT_WaitPointer = $8000000A; { boolean to set the standard wait pointer in window -
- default FALSE }
- RT_Underscore = $8000000B; { (V38) char preceding keyboard shortcut characters (will
- be underlined) }
- RT_ShareIDCMP = $8000000C; { (V38) share IDCMP port with window - default FALSE }
- RT_LockWindow = $8000000D; { (V38) lock window and set standard wait pointer -
- default FALSE }
- RT_ScreenToFront= $8000000E; { (V38) boolean to make requester's screen pop to front -
- default TRUE }
- RT_TextAttr = $8000000F; { (V38) Requester should use this font - default: screen
- font }
- RT_IntuiMsgFunc = $80000010; { (V38) call this hook for every IDCMP message not for
- requester }
- RT_Locale = $80000011; { (V38) Locale ReqTools should use for text }
-
- { *** tags specific to rtEZRequestA *** }
- RTEZ_ReqTitle = $80000014; { title of requester window - english default "Request"
- or "Information" }
- { ($80000015) reserved }
- RTEZ_Flags = $80000016; { various flags (see below) }
- RTEZ_DefaultResponse
- = $80000017; { default response (activated by pressing RETURN) -
- default TRUE }
-
-
- { *** tags specific to rtGetLongA *** }
- RTGL_Min = $8000001E; { minimum allowed value - default MININT }
- RTGL_Max = $8000001F; { maximum allowed value - default MAXINT }
- RTGL_Width = $80000020; { suggested width of requester window (in pixels) }
- RTGL_ShowDefault= $80000021; { boolean to show the default value - default TRUE }
- RTGL_GadFmt = $80000022; { (V38) string with possible responses - english default
- " _Ok |_Cancel" }
- RTGL_GadFmtArgs = $80000023; { (V38) optional arguments for RTGL_GadFmt }
- RTGL_Invisible = $80000024; { (V38) invisible typing - default FALSE }
- RTGL_Backfill = $80000025; { (V38) window backfill - default TRUE }
- RTGL_TextFmt = $80000026; { (V38) optional text above gadget }
- RTGL_TextFmtArgs= $80000027; { (V38) optional arguments for RTGS_TextFmt }
- RTGL_Flags = RTEZ_Flags; { (V38) various flags (see below) }
-
-
- { *** tags specific to rtGetStringA *** }
- RTGS_Width = RTGL_Width; { suggested width of requester window (in pixels)
- }
- RTGS_AllowEmpty = $80000050; { allow empty string to be accepted - default
- FALSE }
- RTGS_GadFmt = RTGL_GadFmt; { (V38) string with possible responses - english
- default " _Ok |_Cancel" }
- RTGS_GadFmtArgs = RTGL_GadFmtArgs; { (V38) optional arguments for RTGS_GadFmt }
- RTGS_Invisible = RTGL_Invisible; { (V38) invisible typing - default FALSE }
- RTGS_Backfill = RTGL_Backfill; { (V38) window backfill - default TRUE }
- RTGS_TextFmt = RTGL_TextFmt; { (V38) optional text above gadget }
- RTGS_TextFmtArgs= RTGL_TextFmtArgs; { (V38) optional arguments for RTGS_TextFmt }
- RTGS_Flags = RTEZ_Flags; { (V38) various flags (see below) }
-
-
- { *** tags specific to rtFileRequestA *** }
- RTFI_Flags = $80000028; { various flags (see below) }
- RTFI_Height = $80000029; { suggested height of file requester }
- RTFI_OkText = $8000002A; { replacement text for 'Ok' gadget (max 6 chars) }
- RTFI_VolumeRequest=$8000002B;{ (V38) bring up volume requester, tag data holds flags
- (see below) }
- RTFI_FilterFunc = $8000002C; { (V38) call this hook for every file in the directory }
- RTFI_AllowEmpty = $8000002D; { (V38) allow empty file to be accepted - default FALSE }
-
-
- { *** tags specific to rtFontRequestA *** }
- RTFO_Flags = RTFI_Flags; { various flags (see below) }
- RTFO_Height = RTFI_Height; { suggested height of font requester }
- RTFO_OkText = RTFI_OkText; { replacement text for 'Ok' gadget (max 6 chars) }
- RTFO_SampleHeight=$8000003C; { suggested height of font sample display - default 24
- }
- RTFO_MinHeight = $8000003D; { minimum height of font displayed }
- RTFO_MaxHeight = $8000003E; { maximum height of font displayed }
- { [($8000003F) to ($80000042) used below] }
- RTFO_FilterFunc = RTFI_FilterFunc;{ (V38) call this hook for every font }
-
-
- { *** (V38) tags for rtScreenModeRequestA *** }
- RTSC_Flags = RTFI_Flags;{ various flags (see below) }
- RTSC_Height = RTFI_Height;{ suggested height of screenmode requester }
- RTSC_OkText = RTFI_OkText;{ replacement text for 'Ok' gadget (max 6 chars) }
- RTSC_PropertyFlags = $8000005A;{ property flags (see also RTSC_PropertyMask) }
- RTSC_PropertyMask = $8000005B;{ property mask - default all bits in
- RTSC_PropertyFlags considered }
- RTSC_MinWidth = $8000005C;{ minimum display width allowed }
- RTSC_MaxWidth = $8000005D;{ maximum display width allowed }
- RTSC_MinHeight = $8000005E;{ minimum display height allowed }
- RTSC_MaxHeight = $8000005F;{ maximum display height allowed }
- RTSC_MinDepth = $80000060;{ minimum display depth allowed }
- RTSC_MaxDepth = $80000061;{ maximum display depth allowed }
- RTSC_FilterFunc = RTFI_FilterFunc;{ call this hook for every display mode id }
-
-
- { *** tags for rtChangeReqAttrA *** }
- RTFI_Dir = $80000032;{ file requester - set directory }
- RTFI_MatchPat = $80000033;{ file requester - set wildcard pattern }
- RTFI_AddEntry = $80000034;{ file requester - add a file or directory to the buffer }
- RTFI_RemoveEntry = $80000035;{ file requester - remove a file or directory from the
- buffer }
- RTFO_FontName = $8000003F;{ font requester - set font name of selected font }
- RTFO_FontHeight = $80000040;{ font requester - set font size }
- RTFO_FontStyle = $80000041;{ font requester - set font style }
- RTFO_FontFlags = $80000042;{ font requester - set font flags }
- RTSC_ModeFromScreen = $80000050;{ (V38) screenmode requester - get display attributes
- from screen }
- RTSC_DisplayID = $80000051;{ (V38) screenmode requester - set display mode id (32-bit
- extended) }
- RTSC_DisplayWidth = $80000052;{ (V38) screenmode requester - set display width }
- RTSC_DisplayHeight = $80000053;{ (V38) screenmode requester - set display height }
- RTSC_DisplayDepth = $80000054;{ (V38) screenmode requester - set display depth }
- RTSC_OverscanType = $80000055;{ (V38) screenmode requester - set overscan type, 0 for
- regular size }
- RTSC_AutoScroll = $80000056;{ (V38) screenmode requester - set autoscroll }
-
-
- { *** tags for rtPaletteRequestA *** }
- { initially selected color - default 1 }
- RTPA_Color = $80000046;
-
- { *** tags for rtReqHandlerA *** }
- { end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
- in case of rtEZRequest to the return value }
- RTRH_EndRequest = $800003C;
-
- { *** tags for rtAllocRequestA *** }
- { no tags defined yet }
-
- {************
- * RT_ReqPos *
- ************}
- REQPOS_POINTER = 0;
- REQPOS_CENTERWIN = 1;
- REQPOS_CENTERSCR = 2;
- REQPOS_TOPLEFTWIN = 3;
- REQPOS_TOPLEFTSCR = 4;
-
- {******************
- * RTRH_EndRequest *
- ******************}
- REQ_CANCEL = 0;
- REQ_OK = 1;
-
- {***************************************
- * flags for RTFI_Flags and RTFO_Flags *
- * or filereq->Flags and fontreq->Flags *
- ***************************************}
- FREQB_NOBUFFER = 2;
- FREQF_NOBUFFER = 4;
-
- {*****************************************
- * flags for RTFI_Flags or filereq->Flags *
- *****************************************}
- FREQB_MULTISELECT = 0;
- FREQF_MULTISELECT = 1;
- FREQB_SAVE = 1;
- FREQF_SAVE = 2;
- FREQB_NOFILES = 3;
- FREQF_NOFILES = 8;
- FREQB_PATGAD = 4;
- FREQF_PATGAD = 16;
- FREQB_SELECTDIRS = 12;
- FREQF_SELECTDIRS = 4096;
-
- {*****************************************
- * flags for RTFO_Flags or fontreq->Flags *
- *****************************************}
- FREQB_FIXEDWIDTH = 5;
- FREQF_FIXEDWIDTH = 32;
- FREQB_COLORFONTS = 6;
- FREQF_COLORFONTS = 64;
- FREQB_CHANGEPALETTE = 7;
- FREQF_CHANGEPALETTE = 128;
- FREQB_LEAVEPALETTE = 8;
- FREQF_LEAVEPALETTE = 256;
- FREQB_SCALE = 9;
- FREQF_SCALE = 512;
- FREQB_STYLE = 10;
- FREQF_STYLE = 1024;
-
- {*****************************************************
- * (V38) flags for RTSC_Flags or screenmodereq->Flags *
- *****************************************************}
- SCREQB_SIZEGADS = 13;
- SCREQF_SIZEGADS = 8192;
- SCREQB_DEPTHGAD = 14;
- SCREQF_DEPTHGAD = 16384;
- SCREQB_NONSTDMODES = 15;
- SCREQF_NONSTDMODES = 32768;
- SCREQB_GUIMODES = 16;
- SCREQF_GUIMODES = 65536;
- SCREQB_AUTOSCROLLGAD = 18;
- SCREQF_AUTOSCROLLGAD = 262144;
- SCREQB_OVERSCANGAD = 19;
- SCREQF_OVERSCANGAD = 524288;
-
- {*****************************************
- * flags for RTEZ_Flags or reqinfo->Flags *
- *****************************************}
- EZREQB_NORETURNKEY = 0;
- EZREQF_NORETURNKEY = 1;
- EZREQB_LAMIGAQUAL = 1;
- EZREQF_LAMIGAQUAL = 2;
- EZREQB_CENTERTEXT = 2;
- EZREQF_CENTERTEXT = 4;
-
- {***********************************************
- * (V38) flags for RTGL_Flags or reqinfo->Flags *
- ***********************************************}
- GLREQB_CENTERTEXT = EZREQB_CENTERTEXT;
- GLREQF_CENTERTEXT = EZREQF_CENTERTEXT;
- GLREQB_HIGHLIGHTTEXT = 3;
- GLREQF_HIGHLIGHTTEXT = 8;
-
- {***********************************************
- * (V38) flags for RTGS_Flags or reqinfo->Flags *
- ***********************************************}
- GSREQB_CENTERTEXT = EZREQB_CENTERTEXT;
- GSREQF_CENTERTEXT = EZREQF_CENTERTEXT;
- GSREQB_HIGHLIGHTTEXT = GLREQB_HIGHLIGHTTEXT;
- GSREQF_HIGHLIGHTTEXT = GLREQF_HIGHLIGHTTEXT;
-
- {*****************************************
- * (V38) flags for RTFI_VolumeRequest tag *
- *****************************************}
- VREQB_NOASSIGNS = 0;
- VREQF_NOASSIGNS = 1;
- VREQB_NODISKS = 1;
- VREQF_NODISKS = 2;
- VREQB_ALLDISKS = 2;
- VREQF_ALLDISKS = 4;
-
- {*
- Following things are obsolete in ReqTools V38.
- DON'T USE THESE IN NEW CODE!
- *}
- REQHOOK_WILDFILE = 0;
- REQHOOK_WILDFONT = 1;
- FREQB_DOWILDFUNC = 11;
- FREQF_DOWILDFUNC = 2048;
-
- VAR ReqToolsBase : pLibrary;
- reqtools_exit : Pointer;
-
- FUNCTION rtAllocRequestA(typ : ULONG; taglist : pTagItem) : POINTER;
- FUNCTION rtChangeReqAttrA(req : POINTER; taglist : pTagItem) : LONGINT;
- PROCEDURE rtCloseWindowSafely(win : pWindow);
- FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
- FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : PChar; taglist : pTagItem) : POINTER;
- FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : PChar; taglist : pTagItem) : ULONG;
- PROCEDURE rtFreeFileList(filelist : prtFileList);
- PROCEDURE rtFreeReqBuffer(req : POINTER);
- PROCEDURE rtFreeRequest(req : POINTER);
- FUNCTION rtGetLongA(VAR longptr : ULONG; title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
- FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
- FUNCTION rtGetVScreenSize(screen : pScreen; VAR widthptr : ULONG; VAR heightptr : ULONG) : ULONG;
- FUNCTION rtLockWindow(win : pWindow) : POINTER;
- FUNCTION rtPaletteRequestA(title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) : LONGINT;
- FUNCTION rtReqHandlerA(handlerinfo : prtHandlerInfo; sigs : ULONG; taglist : pTagItem) : ULONG;
- FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : PChar; taglist : pTagItem) : ULONG;
- PROCEDURE rtScreenToFrontSafely(screen : pScreen);
- PROCEDURE rtSetReqPosition(reqpos : ULONG; newwindow : pNewWindow; screen : pScreen; window : pWindow);
- PROCEDURE rtSetWaitPointer(window : pWindow);
- PROCEDURE rtSpread(VAR posarray : ULONG; VAR sizearray : ULONG; length : ULONG; min : ULONG; max : ULONG; num : ULONG);
- PROCEDURE rtUnlockWindow(win : pWindow; winlock : POINTER);
-
- {$ifdef amiga_overlays}
-
- FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
- FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
- FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
- FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : String; taglist : pTagItem) : POINTER;
- FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : String; taglist : pTagItem) : ULONG;
- FUNCTION rtGetLongA(VAR longptr : ULONG; title : String; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
- FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : String; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
- FUNCTION rtPaletteRequestA(title : String; reqinfo : prtReqInfo; taglist : pTagItem) : LONGINT;
- FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : String; taglist : pTagItem) : ULONG;
-
- {$endif}
-
- IMPLEMENTATION
-
- uses msgbox
- {$ifdef amiga_overlays}
- ,pastoc
- {$endif}
- ;
-
- FUNCTION rtAllocRequestA(typ : ULONG; taglist : pTagItem) : POINTER;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVE.L typ,D0
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -030(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtChangeReqAttrA(req : POINTER; taglist : pTagItem) : LONGINT;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L req,A1
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -048(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- PROCEDURE rtCloseWindowSafely(win : pWindow);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L win,A0
- MOVEA.L ReqToolsBase,A6
- JSR -150(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : PChar; reqinfo : prtReqInfo; argarray
- : POINTER; taglist : pTagItem) : ULONG;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L bodyfmt,A1
- MOVEA.L gadfmt,A2
- MOVEA.L reqinfo,A3
- MOVEA.L argarray,A4
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -066(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : PChar;
- taglist : pTagItem) : POINTER;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L filereq,A1
- MOVEA.L filebuf,A2
- MOVEA.L title,A3
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -054(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : PChar; taglist : pTagItem)
- : ULONG;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L fontreq,A1
- MOVEA.L title,A3
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -096(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- PROCEDURE rtFreeFileList(filelist : prtFileList);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L filelist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -060(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- PROCEDURE rtFreeReqBuffer(req : POINTER);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L req,A1
- MOVEA.L ReqToolsBase,A6
- JSR -042(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- PROCEDURE rtFreeRequest(req : POINTER);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L req,A1
- MOVEA.L ReqToolsBase,A6
- JSR -036(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- FUNCTION rtGetLongA(VAR longptr : ULONG; title : PChar; reqinfo : prtReqInfo; taglist
- : pTagItem) : ULONG;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L longptr,A1
- MOVEA.L title,A2
- MOVEA.L reqinfo,A3
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -078(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
-
- FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : PChar; reqinfo :
- prtReqInfo; taglist : pTagItem) : ULONG;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L buffer,A1
- MOVE.L maxchars,D0
- MOVEA.L title,A2
- MOVEA.L reqinfo,A3
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -072(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtGetVScreenSize(screen : pScreen; VAR widthptr : ULONG; VAR heightptr :
- ULONG) : ULONG;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L screen,A0
- MOVEA.L widthptr,A1
- MOVEA.L heightptr,A2
- MOVEA.L ReqToolsBase,A6
- JSR -120(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtLockWindow(win : pWindow) : POINTER;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L win,A0
- MOVEA.L ReqToolsBase,A6
- JSR -156(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtPaletteRequestA(title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) :
- LONGINT;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L title,A2
- MOVEA.L reqinfo,A3
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -102(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtReqHandlerA(handlerinfo : prtHandlerInfo; sigs : ULONG; taglist : pTagItem)
- : ULONG;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L handlerinfo,A1
- MOVE.L sigs,D0
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -108(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : PChar;
- taglist : pTagItem) : ULONG;
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L screenmodereq,A1
- MOVEA.L title,A3
- MOVEA.L taglist,A0
- MOVEA.L ReqToolsBase,A6
- JSR -144(A6)
- MOVEA.L (A7)+,A6
- MOVE.L D0,@RESULT
- END;
- END;
-
- PROCEDURE rtScreenToFrontSafely(screen : pScreen);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L screen,A0
- MOVEA.L ReqToolsBase,A6
- JSR -138(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- PROCEDURE rtSetReqPosition(reqpos : ULONG; newwindow : pNewWindow; screen : pScreen;
- window : pWindow);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVE.L reqpos,D0
- MOVEA.L newwindow,A0
- MOVEA.L screen,A1
- MOVEA.L window,A2
- MOVEA.L ReqToolsBase,A6
- JSR -126(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- PROCEDURE rtSetWaitPointer(window : pWindow);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L window,A0
- MOVEA.L ReqToolsBase,A6
- JSR -114(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- PROCEDURE rtSpread(VAR posarray : ULONG; VAR sizearray : ULONG; length : ULONG; min :
- ULONG; max : ULONG; num : ULONG);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L posarray,A0
- MOVEA.L sizearray,A1
- MOVE.L length,D0
- MOVE.L min,D1
- MOVE.L max,D2
- MOVE.L num,D3
- MOVEA.L ReqToolsBase,A6
- JSR -132(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- PROCEDURE rtUnlockWindow(win : pWindow; winlock : POINTER);
- BEGIN
- ASM
- MOVE.L A6,-(A7)
- MOVEA.L win,A0
- MOVEA.L winlock,A1
- MOVEA.L ReqToolsBase,A6
- JSR -162(A6)
- MOVEA.L (A7)+,A6
- END;
- END;
-
- {$ifdef amiga_overlays}
-
- FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : String; reqinfo : prtReqInfo; argarray
- : POINTER; taglist : pTagItem) : ULONG;
- BEGIN
- rtEZRequestA := rtEZRequestA(bodyfmt,pas2c(gadfmt),reqinfo,argarray,taglist);
- END;
-
- FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : PChar; reqinfo : prtReqInfo; argarray
- : POINTER; taglist : pTagItem) : ULONG;
- BEGIN
- rtEZRequestA := rtEZRequestA(pas2c(bodyfmt),gadfmt,reqinfo,argarray,taglist);
- END;
-
- FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : String; reqinfo : prtReqInfo;
- argarray : POINTER; taglist : pTagItem) : ULONG;
- BEGIN
- rtEZRequestA :=
- rtEZRequestA(pas2c(bodyfmt),pas2c(gadfmt),reqinfo,argarray,taglist);
- END;
-
- FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : String;
- taglist : pTagItem) : POINTER;
- BEGIN
- rtFileRequestA := rtFileRequestA(filereq,filebuf,pas2c(title),taglist);
- END;
-
- FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : String; taglist :
- pTagItem) : ULONG;
- BEGIN
- rtFontRequestA := rtFontRequestA(fontreq,pas2c(title),taglist);
- END;
-
- FUNCTION rtGetLongA(VAR longptr : ULONG; title : String; reqinfo : prtReqInfo; taglist
- : pTagItem) : ULONG;
- BEGIN
- rtGetLongA := rtGetLongA(longptr,pas2c(title),reqinfo,taglist);
- END;
-
- FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : String; reqinfo :
- prtReqInfo; taglist : pTagItem) : ULONG;
- BEGIN
- rtGetStringA := rtGetStringA(buffer,maxchars,pas2c(title),reqinfo,taglist);
- END;
-
- FUNCTION rtPaletteRequestA(title : String; reqinfo : prtReqInfo; taglist : pTagItem) :
- LONGINT;
- BEGIN
- rtPaletteRequestA := rtPaletteRequestA(pas2c(title),reqinfo,taglist);
- END;
-
- FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : String;
- taglist : pTagItem) : ULONG;
- BEGIN
- rtScreenModeRequestA := rtScreenModeRequestA(screenmodereq,pas2c(title),taglist);
- END;
-
- {$endif}
-
- PROCEDURE CloseReqToolsLibrary;
- BEGIN
- ExitProc := reqtools_exit;
- if ReqToolsBase <> nil then begin
- CloseLibrary(ReqToolsBase);
- ReqToolsBase := nil;
- end;
- END;
-
- const
- VERSION : string[2] = '38';
-
- BEGIN
- ReqToolsBase := nil;
- ReqToolsBase := OpenLibrary(REQTOOLSNAME,REQTOOLSVERSION);
- IF ReqToolsBase <> NIL THEN begin
- reqtools_exit := ExitProc;
- ExitProc := @CloseReqToolsLibrary;
- end else begin
- MessageBox('FPC Pascal Error',
- 'Can''t open reqtools.library version ' +
- VERSION +
- chr(10) +
- 'Deallocating resources and closing down',
- 'Oops');
- halt(20);
- end;
-
-
-
- END. (* UNIT REQTOOLS *)
-
-
-
-